As will be better understood from the following description, the present invention was developed to provide more positive interaction with an operating system by avoiding unintentional switching of the foreground window of a windows-based operating system, which can cause inputs to be unintentionally sent to the wrong application program.
It is now common for operating systems to have a shell which provides a graphical user interface (GUI). The shell is a piece of software (either a separate program or component part of the operating system) that provides direct communication between the user and the operating system. The GUI typically provides a graphical icon-oriented and/or menu driven environment for the user to interact with the operating system.
The GUI of many operating system shells is based on a desktop metaphor. More specifically, the GUI is intended to create a graphical environment which simulates working at a desk. These GUIs typically employ a windowing environment with a desktop. The windowing environment presents the user with specially delineated areas of the screen called windows, each of which is dedicated to a particular application program. Application programs or processes presented in a window include sub-processes or threads that are displayed in separate windows. Each window can act independently, as if it were a virtual display device under control of its particular process or thread.
Windows can typically be resized, moved around the display, and stacked so as to overlay one another. In some windowing environments, windows can be minimized to an icon or increased to a full-screen display. Usually, the windows have a top to bottom order in which they are displayed, with top windows at a particular location on the screen overlaying any other window at that same location. The top-most window is the "focus" or "foreground" window and the process or thread associated with the focus window responds to the users'input. The user can switch other windows to the top by clicking with a mouse or other pointer device, or by inputting certain key combinations. This allows the user to work with multiple application programs in a manner similar to physically working with multiple paper documents and items, which can be arbitrarily stacked or arranged on an actual desk.
In present windowing environments, if a user is typing when a focus or foreground window change takes place, the user can, unintentionally, send keyboard input to a process or thread associated with the new foreground window. This may generate an unwanted action by the process or thread associated with the new foreground window and delay the user's completion of tasks related to the process or thread associated with the previous focus or foreground window. This typically happens when a process, other than the one the user is typing to, creates a thread that generates a message to be displayed in a message box or alert window and the thread requests the operating system to allow the message box window to take the foreground window position. When the operating system allows the foreground window request, the message box window takes the foreground window position and user interface actions, such as typing, are directed to the thread associated with the "new" foreground window. Such input (meant to go to the process or thread associated with the previous foreground window) might reply and perhaps dismiss the message box window before the user reads the message in the message box window, and sometimes even before the user sees the message box window at all. The result is a delay in the user interaction with the process or thread in the previous foreground window or the missing of meetings or other important activities because the associated notification was not properly received.
The present invention is directed to overcoming the foregoing and other disadvantages. More specifically, the present invention is directed to providing a method, system and computer product for effectively controlling the interaction of applications in a windows-based operating system.